5 POKE 53280,15:POKE 53281,12:PRINT"" 10 REM SIMULTANE LOESUNG LINEARER GLEICHUNGEN 11 REM MIT HILFE DER GAUSS-JORDAN-ELIMINATION 12 REM VARIABLEN 14 REM C1 LOESUNGSVEKTOR 15 REM E1 FEHLERANZEIGE 16 REM M1 MAXIMALE LAENGE 17 REM N1 ANZAHL DER ZEILEN 18 REM N2 ANZAHL DER SPALTEN 19 REM I2 HILFSMATRIX 20 REM ENDE DER VARIABLEN 30 REM 70 M1=8 80 DIM Z(8),A(8,8),C1(8),W(8,1),B(8,8),I2(8,3) 90 PRINT"[147]SIMULTANE LOESUNG MIT HILFE" 100 PRINT"DER GAUSS-JORDAN-ELIMINATION" 110 GOSUB 500:REM EINGABE-ROUTINE 120 GOSUB 5000:REM GAUSS-JORDAN-ROUTINE 130 REM 140 IF N1>5 THEN 220 150 PRINT"[153] MATRIX-KONSTANTEN" 155 PRINT 160 FOR I=1 TO N1 170 : FOR J=1 TO N2 180 : PRINTTAB(10)A(I,J); 190 : NEXT J 200 : PRINTTAB(25)Z(I) 210 NEXT I 220 PRINT"" 230 IF E1=1 THEN PRINTTAB(6)"[158]FEHLER: MATRIX SINGULAER":GOTO 300 240 PRINT"[144] LOESUNG" 250 PRINT 260 FOR I=1 TO N2 270 : PRINTTAB(10)INT(C1(I)*100+.5)/100; 280 NEXT I 290 PRINT"" 300 GOTO 9999 500 REM EINGABE DER DATEN 530 PRINT 540 INPUT"[159]ANZAHL DER GLEICHUNGEN:";N1 545 PRINT"" 550 IF N1>M1 THEN 540 560 IF N1<2 THEN 9999 570 N2=N1 580 FOR I=1 TO N1 590 : PRINT"GLEICHUNG";I 600 : FOR J=1 TO N1 610 : PRINTTAB(20)J;" "; 620 : INPUT A(I,J) 630 : NEXT J 640 : INPUT" C ";Z(I) 650 NEXT I 660 RETURN 5000 REM GAUSS-JORDAN MATRIX-INVERSION UND LOESUNG 5011 REM VARIABLEN 5013 REM A KOEFFIZIENTENMATRIX 5014 REM B HILFSARRAY 5015 REM B1 GROESSTER WERT 5016 REM C1 LOESUNGSVEKTOR 5017 REM D3 DETERMINANTEE 5018 REM E1 FEHLERANZEIGE 5019 REM H1 HILFSVARIABLE 5020 REM I2 HILFSMATRIX 5021 REM I3 ZEILENINDEX 5022 REM I4 SPALTENINDEX 5023 REM I5 ANZEIGE FUER INVERSES DRUCKEN 5024 REM N2 ANZAHL DR SPALTEN 5025 REM N3 ANZAHL DER KONSTANTENVEKTOREN 5026 REM P1 PIVOT-INDEX 5027 REM W LOESUNGSMATRIX 5028 REM Z KONSTANTENVEKTOR 5029 REM ENDE DER VARIABLEN 5080 REM 5090 E1=0:REM WIRD 1 GESETZT,FALLS DIE MATRIX SINGULAER IST 5100 I5=0:REM FALLS 0,DRUCKE DIE INVERSE MATRIX 5110 N3=1:REM ANZAHL DER KONSTANTENVEKTOREN 5120 FORI=1TON2 5130 : FORJ=1TON2 5140 : B(I,J)=A(I,J) 5150 : NEXTJ 5160 : W(I,1)=Z(I) 5170 : I2(I,3)=0 5180 : NEXT I 5190 : D3=1 5200 : FORI=1TON2 5210 : REM 5220 : REM SUCHE NACH DEM GROESSTEN (PIVOT-)ELEMENT 5230 : REM 5240 : B1=0 5250 : FORJ=1TON2 5260 : IF(I2(J,3)=1)THEN5350 5270 : FORK=1TON2 5280 : IF(I2(K,3)>1)THEN6120 5290 : IF(I2(K,3)=1)THEN5340 5300 : IF(B1>=ABS(B(J,K)))THEN5340 5310 : I3=J 5320 : I4=K 5330 : B1=ABS(B(J,K)) 5340 : NEXTK 5350 : NEXTJ 5360 : I2(I4,3)=I2(I4,3)+1 5370 : I2(I,1)=I3 5380 : I2(I,2)=I4 5390 : REM ZEILENVERTAUSCHUNG,UM DAS PIVOT-ELEMENT IN DIE DIAGONALE ZU BRINGEN 5400 : IF(I3=I4)THEN5540 5410 : D3=-D3 5420 : FORL=1TON2 5430 : H1=B(I3,L) 5440 : B(I3,L)=B(I4,L) 5450 : B(I4,L)=H1 5460 : NEXTL 5470 : IF(N3<1)THEN5540 5480 : FORL=1TON3 5490 : H1=W(I3,L) 5500 : W(I3,L)=E(I4,L) 5510 : W(I4,L)=H1 5520 : NEXTL 5530 : REM DIVISION VON PIVOT-ZEILE DURCH PIVOT-ELEMENT 5540 : P1=B(I4,I4) 5550 : D3=D3*P1 5560 : B(I4,I4)=1 5570 : FORL=1TON2 5580 : B(I4,L)=B(I4,L)/P1 5590 : NEXTL 5600 : IF(N3<1)THEN5660 5610 : FORL=1TON3 5620 : W(I4,L)=W(I4,L)/P1 5630 : NEXTL 5640 : REM 5650 : REM REDUZIERE NICHT-PIVOT-ZEILE 5660 : FORL1=1TON2 5670 : IF(L1=I4)THEN5770 5680 : T=B(L1,I4) 5690 : B(L1,I4)=0 5700 : FORL=1TON2 5710 : B(L1,L)=B(L1,L)-B(I4,L)*T 5720 : NEXTL 5730 : IF(N3<1)THEN5770 5740 : FORL=1TON3 5750 : W(L1,L)=W(L1,L)-W(I4,L)*T 5760 : NEXTL 5770 :NEXTL1 5780 NEXTI 5790 REM 5800 REM SPALTENVERTAUSCHUNG 5810 REM 5820 FORI=1TON2 5830 : L=N2-I+1 5840 : IF(I2(L,1)=I2(L,2))THEN5920 5850 : I3=I2(L,1) 5860 : I4=I2(L,2) 5870 : FORK=1TON2 5880 : H1=B(K,I3) 5890 : B(K,I3)=B(K,I4) 5900 : B(K,I4)=H1 5910 : NEXTK 5920 NEXTI 5930 FORK=1TON2 5940 : IF(I2(K,3)<>1)THEN6120 5950 NEXTK 5960 E1=0 5970 FORI=1TON2 5980 : C1(I)=W(I,1) 5990 NEXTI 6000 IF(I5=1)THEN6140 6020 PRINT"[147][158]INVERSE MATRIX":PRINT 6030 FORI=1TON2 6040 : FORJ=1TON2 6050 : PRINTTAB(11)INT(B(I,J)*100+.5)/100; 6060 : NEXTJ 6070 : PRINT 6080 NEXTI 6090 PRINT"" 6100 PRINT"DETERMINANTE=";D3 6110 RETURN:REM FALLS DIE INVERSE GEDRUCKT WIRD 6120 E1=1 6140 RETURN:REM ENDE DES GAUSS-JORDAN-UNTERPROGRAMMS 9999 END